# -*- coding:utf-8 -*-
"""
@Time:  2024/6/15 13:43
@Auth:  Mrs.Gou 
@Function:  函数应用
"""


# from class05.demo3 import my_func2
#
# my_func2()


# # 函数的return
# def my_func4(x=1, y=2):
#     print(x)
#     # 函数在哪里return了，就代表整个函数执行完了，其它任何代码都不跑了
#     # 如果有多个值，可以一起返回，返回的数据结构是一个元祖
#     # return x + y
#     # 如果不写return，直接return，都是返回none
#     return x, y, 3
#     # 这是没有意义的代码
#     print(y)
#
#
# z = my_func4()
# print(z)


# # 这是给变量指定推荐使用的数据类型
# a: int = 's'
# print(a)


# # 前n个will替换成roy？
# # 解决冲突，最好是使用标志性字符串
# # 先把n个都替换
# n = 3
# s = 'will,roy,tufei,roy,will,tufeiroywilltufeiroywill'
# s = s.replace('will', '$roy', n)
# # 再把前n-1替换回去
# s = s.replace('$roy', 'will', n - 1)
# s = s.replace('$roy', 'roy')
# print(s)

# 把上面的替换封装成方法：
def my_re_n(s: str, old: str, new: str, n: int = 0):
    """
    怎么设计这个函数？
    首先：得有一个字符串，没有的话，没有意义了
    其次：得知道把什么替换成什么
    再次：得知道替换多少次
    :param s:必传，目标字符串
    :param old:必传
    :param new:必传
    :param n:默认替换0次
    :return:返回替换后字符串
    """

    if not (s and n > 0):
        return s
    # 先把前n个替换成标志性字符串
    s = s.replace(str(old), '$my_re$', n)
    # 再把前n-1个替换回去
    s = s.replace('$my_re$', str(old), n - 1)
    # 把剩下的一个替换就行了
    s = s.replace('$my_re$', str(new))
    return s


s = 'will,roy,tufei,roy,will,tufeiroywilltufeiroywill'
s = my_re_n(s, 'will', 'roy', 3)
print(s)
